package world.snowcrystal.service;


import world.snowcrystal.exception.SnowcrystalFailToWriteMailException;
import world.snowcrystal.exception.SnowcrystalInvalidMailException;

public interface MailService {


    /**
     * 发送邮件给指定收件人
     * @param to 收件人应是一个邮箱地址
     * @param text 指定内容，可以是 html 文本
     * @param html 指定内容是否为 html true 表示内容为 html；并且在发送邮件时将指定 MIME 为<code>text/html</>
     * @throws SnowcrystalInvalidMailException 如果传入的是一个不合法的邮箱地址，则抛出该异常
     * @throws SnowcrystalFailToWriteMailException 如果在写入邮件主体时发生错误，将抛出该异常
     * @since 1.0
     * @author tianqing
     */
    void sendMail(String to,String text,boolean html) throws SnowcrystalInvalidMailException, SnowcrystalFailToWriteMailException;


    /**
     * 使用默认的 HTML 模板发送验证码，调用者需要自行验证目的邮箱的合法性
     * @param to 目的邮箱
     * @param verificationCode 验证码
     * @since 1.0
     * @author tianqing
     */
    void sendMail(String to,String verificationCode);


    /**
     * 使用默认的 HTML 模板向用户发送密码，调用者需要自行验证目的邮箱的
     * 合法性
     * @since 1.0
     * @author tianqing
     */
    void sendMailWithDefaultPassword(String to,String password);


}
